package com.dhemery.publishing;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* Discovers the subscription methods on an object.
*/
public class SubscriberInspector {
/**
* Report the subscription methods declared on the subscriber.
*/
public Set<Method> subscriptionsOn(Object subscriber) {
SubscriptionMethodFilter filter = new SubscriptionMethodFilter();
Class<?> subscriberClass = subscriber.getClass();
List<Method> methods = Arrays.asList(subscriberClass.getMethods());
Set<Method> subscriptions = new HashSet<Method>();
for (Method method : methods) {
if (filter.accepts(method)) {
subscriptions.add(method);
}
}
return subscriptions;
}
}